package com.weijian.controller;

import com.weijian.common.result.ApiResponse;
import com.weijian.dal.entity.Route;
import com.weijian.dal.enums.RouteType;
import com.weijian.dto.data.RouteUtilizationStats;
import com.weijian.service.RouteService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 路线管理接口
 */
@Tag(name = "路线管理", description = "路线增删改查接口")
@RestController
@RequestMapping("/api/routes")
public class RouteController {

    @Autowired
    private RouteService routeService;

    /**
     * 根据dataId查询路线
     *
     * @param dataId 数据ID
     * @return 路线列表
     */
    @Operation(summary = "根据dataId查询路线")
    @GetMapping("/by-data")
    public ApiResponse<List<Route>> getRoutesByDataId(
            @Parameter(description = "数据ID") @RequestParam Integer dataId) {
        List<Route> routes = routeService.getRoutesByDataId(dataId);
        return ApiResponse.success(routes);
    }

    /**
     * 根据路线类型查询路线
     *
     * @param routeType 路线类型
     * @return 路线列表
     */
    @Operation(summary = "根据路线类型查询路线")
    @GetMapping("/type/{routeType}")
    public ApiResponse<List<Route>> getRoutesByType(
            @Parameter(description = "路线类型: 1-西海路新通道 2-长江经济带 3-跨境公路")
            @PathVariable Integer routeType) {
        RouteType type = RouteType.fromCode(routeType);
        if (type == null) {
            return ApiResponse.badRequest("无效的路线类型");
        }

        List<Route> routes = routeService.getRoutesByType(type);
        return ApiResponse.success(routes);
    }
    
    /**
     * 获取各类路线的利用率统计
     *
     * @param dataId 数据ID
     * @return 各类路线利用率统计列表
     */
    @Operation(summary = "获取各类路线的利用率统计")
    @GetMapping("/utilization-stats")
    public ApiResponse<List<RouteUtilizationStats>> getRouteUtilizationStats(
            @Parameter(description = "数据ID") @RequestParam Integer dataId) {
        List<RouteUtilizationStats> stats = routeService.getRouteUtilizationStatsByDataId(dataId);
        return ApiResponse.success(stats);
    }
}